/***************************************************************************************************
  *Copyright(C),2017-2020,Sumscope
  *FileName	:  NatCalculatorParam
  *Author	:  Givins.zhu
  *Version	:  2.0
  *Date		:  2017/11/17
  *Desc		:  国债期货计算相关的参数
  *History	:
  *Email    :  Givins.zhu@sumscope.com  
***************************************************************************************************/
#pragma  once
#include "tfbondlib.h"
#include <string>
#include <map>
#include <qbprotocol/include/SSQBModel.h>
#include <core/sync/lock.h>

class S_TFBONDLIB_EXPORT CNatCalculatorParam
{
public:
	CNatCalculatorParam();
	~CNatCalculatorParam();

public:
	/************************************************************************/
	/* 插入转换因子                                                                     */
	/************************************************************************/
	bool InsertConvertFactor(const xConvertFactorsAck_c* pAck);
	//添加单个
	bool InsertConvertFactor(const char* m_deliverDate, const char* cBondKey, double dbFac);

	/************************************************************************/
	/* 获取转换因子                                                                     */
	/************************************************************************/
	bool GetBondConvertFactor(const char* m_deliverDate, const char* cBondKey, double& dbFac);

	/************************************************************************/
	/* 清除数据                                                               */
	/************************************************************************/
	void ClearData();

private:
	/*获取key*/
	void getCombineKey(std::string& stKey, const char* m_deliverDate, const char* cBondKey);

private:	
	qb::base::Mutex m_mutex;
	/************************************************************************/
	/* string = date+tfDeliverDate+bondkey                                           */
	/************************************************************************/
	std::map<std::string, double> m_mapFactor;
};
